package juanma;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class Item {
	
	public String nombre = "";
	protected Double peso = 0.0;
	protected Double precio = 0.0;
	public Boolean magico = false;
	public Boolean equipado = false;
	public String notas = "";
	public String magia = "";
	private Integer cantidad = 1;

	public Item(){
	}	
	
	public Item(String unNombre){
		this.nombre = unNombre;
	}
	
	public Integer getCantidad() {
		return cantidad;
	}

	public void setCantidad(Integer cantidad) {
		if(cantidad >= 0)
			this.cantidad = cantidad;
	}
	
	public double getPeso() {
		return peso;
	}

	public void setPeso(double peso) {
		if(!(peso < 0))
			this.peso = peso;
	}

	public double getPrecio() {
		return precio;
	}

	public void setPrecio(double costo) {
		if(!(costo < 0))
			this.precio = costo;
	}

	public void usarItem() {
		if(cantidad > 0){
			cantidad--;
		}
	}

	public Element serializar(Document doc) {
		Element elementoItem = doc.createElement("Item");
		elementoItem.setAttribute("nombre", this.nombre);
		elementoItem.setAttribute("peso", String.valueOf(this.peso));
		elementoItem.setAttribute("precio", String.valueOf(this.precio));
		elementoItem.setAttribute("magico", String.valueOf(this.magico));
		elementoItem.setAttribute("equipado", String.valueOf(this.equipado));
		elementoItem.setAttribute("notas", this.notas);
		elementoItem.setAttribute("magia", this.magia);
		elementoItem.setAttribute("cantidad", String.valueOf(this.cantidad));
		
		return elementoItem;
	}

	public static Item hidratar(Node nodoItem) {
		Item itemNuevo = new Item();
		Element elementoItem = (Element)nodoItem;
		itemNuevo.nombre = elementoItem.getAttribute("nombre");
		itemNuevo.equipado = Boolean.valueOf(elementoItem.getAttribute("equipado"));
		itemNuevo.magia = elementoItem.getAttribute("magia");
		itemNuevo.magico = Boolean.valueOf(elementoItem.getAttribute("magico"));
		itemNuevo.notas = elementoItem.getAttribute("notas");
		itemNuevo.setCantidad(Integer.parseInt(elementoItem.getAttribute("cantidad")));
		itemNuevo.setPeso(Double.parseDouble(elementoItem.getAttribute("peso")));
		itemNuevo.setPrecio(Double.parseDouble(elementoItem.getAttribute("precio")));
		
		return itemNuevo;
	}
	
}
